package lightswitch.server.code.sqlhelper.statement.update;

import lightswitch.server.code.object.DataRow;
import lightswitch.server.code.sqlhelper.ExpressionHelper;
import lightswitch.server.code.sqlhelper.expression.Expression;
import lightswitch.server.code.sqlhelper.statement.select.From;
import lightswitch.server.code.util.StringHelper;
import lightswitch.server.code.util.TypeOfData;

public class UpdateItem {
	String name="";
	Expression value;
	String dataType="";
	public UpdateItem(String statement, From from)
	{
		statement = StringHelper.NormalizeString(statement);
		String[] spl =statement.split("=");
		if(spl.length==2)
		{
			name = spl[0];
			if(!name.contains("."))
			{
				if(from._tableList.size()==1)
				{
					name=from._tableList.get(0).name+"."+name;
				}
				else
				{
					//throw exception
					return;
				}
			}
			name = StringHelper.NormalizeString(name);
			value=ExpressionHelper.parseExpression(spl[1], from);
//			value=spl[1];
//			value = StringHelper.NormalizeString(value);
//			name = StringHelper.NormalizeString(name);
//			if(value.matches("'.*'")||value.equals("null"))
//			{
//				value = value.substring(1,value.length()-1);
//				dataType=TypeOfData.CHAR;
//			}
//			else
//			{
//				if(value.matches("[0-9\\.-]+"))
//				{
//					dataType=TypeOfData.FLOAT;
//							
//				}
//				else
//				{
//					if(value.equals("true")|value.equals("false"))
//					{
//						dataType= TypeOfData.BOOLEAN;
//					}
//					else
//					{
//						
//						if(value.contains("."))
//						{
//							dataType= TypeOfData.VAR;
//						}
//						else
//						{
//							if(from._tableList.size()==1)
//							{
//								value=from._tableList.get(0).name+"."+value;
//								dataType= TypeOfData.VAR;
//							}
//							else
//							{
//								//throw exception
//								return;
//							}
//						}
//				
//						
//						return;
//					}
//				}
//			}
		}
		else
		{
			//throw exception
			return;
		}
	}
	public Object getValue(DataRow row)
	{
		Object v = value.GetValue(row, null);
		dataType = value.dataType;
		if(value.dataType.equals(TypeOfData.FLOAT)||value.dataType.equals(TypeOfData.INT))
		{
			dataType=TypeOfData.FLOAT;
		}
		
		return v;
	}
	
}
